# 所谓多态：定义时的类型和运行时的类型不一样，此时就成为多态。
# Pyhon不支持Java和C#这一类强类型语言中多态的写法，但是原生多态，Python崇尚“鸭子类型”，
# 利用python伪代码实现Java和C#的多态

# 在程序设计中，鸭子类型（英语：duck typing）是动态类型的一种风格。在这种风格中，一个对象有效的语义，
# 不是由继承自特定的类或实现特定的接口，而是由当前方法和属性的集合决定。 “鸭子测试”可以这样表述：
# “当看到一只鸟走起来像鸭子、游泳起来像鸭子、叫起来也像鸭子，那么这只鸟就可以被称为鸭子。”
# 在鸭子类型中，关注的不是对象的类型本身，而是它是如何使用的。

class Cat:
    def sayWho(self):
        print("我是小猫")
        pass
    pass
class Dog:
    def sayWho(self):
        print("我是小狗")
        pass
    pass

class Duck:
    def sayWho(self):
        print("我是鸭子")
        pass
    pass

class Pig:
    def sayWho(self):
        print("我是小猪")
        pass
    pass

class Person:
    def sayWho(self):
        print("我是人")
        pass
    pass

list1=[Cat(),Dog(),Duck(),Pig(),Person()]
def intruduction(obj):
    "介绍自己"
    for item in obj:
        item.sayWho()
    pass
intruduction(list1)





